probabilistic matching algorithms